﻿using System;
using System.Windows.Forms;
using System.Windows.Xps.Packaging;
using DataBaseLayer.Abstractions;
using DocumentManager.Enums;

namespace DocumentManager.Abstractions.Factories
{
	public abstract class FormBaseFactory
	{
		#region Variables

		protected readonly HelperBaseFactory _helperFactory;

		protected readonly ServiceBaseFactory _serviceFactory;

		#endregion

		#region Constructors

		protected FormBaseFactory(HelperBaseFactory helperFactory, ServiceBaseFactory serviceFactory)
		{
			if (helperFactory == null)
				throw new ArgumentNullException(string.Format("helper Factory"));
			_helperFactory = helperFactory;

			if (serviceFactory == null)
				throw new ArgumentNullException(string.Format("service Factory"));
			_serviceFactory = serviceFactory;
		}

		#endregion

		#region Abstract Methods

		public abstract Form CreateForm(FormType formType);

		public abstract Form CreateOrderForm(OrderType orderType);

		public abstract System.Windows.Controls.UserControl CreateDocumentViewerUserControl(XpsDocument xpsDocumemt);

		public abstract Form CreateDocumentViewerForm(string wordDocumentFilePath);

		#endregion
	}
}
